Type: concept
Confidence: 0.95
Created: 2026-04-17
Updated: 2026-04-17
Tags: 技术研究计算理论

eval 函数

概述

eval 是 McCarthy 在1960年 LISP 论文中用 LISP 自身定义的通用解释器。它接受一个 S-表达式(代表 LISP 程序)和一个环境,返回该程序的求值结果。不到一页篇幅的定义被称为"计算机科学史上最美丽的一页"。

关键内容

核心逻辑

  1. 如果表达式是原子,在环境中查找它的值
  2. 如果表达式是 (quote x) 形式,直接返回 x(不求值)
  3. 如果表达式是 (cond ...) 形式,依次求值条件
  4. 如果表达式是 (lambda ...) 形式,创建一个闭包
  5. 否则,表达式是函数调用 (f a1 a2 ...)——求值函数和参数,将函数应用于参数

为什么美丽

实现传奇

Steve Russell(McCarthy 的学生)看到论文中的 eval 定义后,意识到它可以直接翻译为机器码——于是他就这么做了。McCarthy 本人最初认为 eval 只是理论定义,没想到它会被直接实现。

现代回声

语言模型(LLM)根据自然语言描述生成代码的能力,在结构上类似于 eval——接受一种表示(自然语言),生成另一种表示(可执行代码),然后执行它。

来源

相关